package com.itany.corejava.code09_集合.set集合;

import java.util.*;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年11月21日 10:32
 */
public class Test01_HashSet {
    public static void main(String[] args) {
        // defineSet();
        // setMethod();
        getValue();
    }
    public static void defineSet(){
        // 方式一:使用默认容量16，加载因子是0.75
        HashSet<String> set=new HashSet<>();
        set.add("admin");
        set.add("alice");
        System.out.println(set);

        // 方式二：同时添加多个元素，不允许添加重复元素
        List<Integer> list=new ArrayList<>(Arrays.asList(1,2,3,8,4,4,4,8));
        System.out.println(list);

        HashSet<Integer> set2=new HashSet<>(Arrays.asList(1,2,3,8,4,4,4,8));
        System.out.println(set2);

        //将list转换为Set，需要注意set不可重复
        List<Integer> list2=new ArrayList<>(Arrays.asList(100,100,200,200,300));
        HashSet<Integer> set3=new HashSet<>(list2);
        System.out.println(set3);

        //方式三:使用自定义的初始容量和默认加载因子
        HashSet<String> set4=new HashSet<>(10);
        HashSet<String> set5=new HashSet<>(10,0.5F);

    }

    public static void setMethod(){
        HashSet<String> set=new HashSet<>();
        System.out.println("集合是否为空:"+set.isEmpty());
        System.out.println(set.size()==0);
        set.add("cc");
        set.add("aa");
        set.add("alice");
        set.add("bb");
        set.add("yi");
        System.out.println(set);
        System.out.println("集合是否为空:"+set.isEmpty());
        System.out.println(set.size());

        //删除元素，如果指定元素存在于此 set 中，则将其移除。
        System.out.println(set.remove("aa"));//true
        System.out.println(set.remove(100));//false
        System.out.println(set.size());

        //判断是否包含45
        System.out.println(set.contains(45));

        //清空集合
        set.clear();

        System.out.println("清空后:"+set);

    }

    public static void getValue(){
        Set<Integer> set=new HashSet<>();
        set.add(1);
        set.add(10);
        set.add(20);
        set.add(30);
        set.add(100);

        //由于set没有索引，因此不支持普通for循环
        // 方式一：使用增强for循环进行遍历
        for(Integer num:set){
            System.out.println(num);
        }
        System.out.println("=====================");
        //方式二：使用Iterator进行遍历
       Iterator<Integer> it= set.iterator();
        while(it.hasNext()){
            System.out.print(it.next()+"\t");
        }

    }
}
